{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 从python列表创建DataFrame\n",
    "d1 = [1, 2, 3]\n",
    "d2 = [5, 6, 7]\n",
    "df = pd.DataFrame({'col1':d1, 'col2':d2})\n",
    "fig, ax = plt.subplots(1, 2, figsize=(10, 5))\n",
    "\n",
    "df.col1.plot(ax=ax[0], marker='o')\n",
    "df.col2.plot(ax=ax[1], color='red', marker='o')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  col1\n",
      "0   12\n",
      "1   34\n",
      "2   56\n",
      "0    12\n",
      "1    34\n",
      "2    56\n",
      "Name: col1, dtype: uint8\n"
     ]
    }
   ],
   "source": [
    "# 将字符串列表的元素转换为数字\n",
    "d1 = ['12', '34', '56']\n",
    "df = pd.DataFrame({'col1':d1})\n",
    "print(df)\n",
    "df = pd.to_numeric(df['col1'], errors='coerce', downcast='unsigned')\n",
    "print(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     col\n",
      "5    5.0\n",
      "6    6.0\n",
      "7    7.0\n",
      "8    8.0\n",
      "9    9.0\n",
      "10  10.0\n"
     ]
    }
   ],
   "source": [
    "# 过滤数据\n",
    "df = pd.DataFrame({'col': np.linspace(0, 10, 11)})\n",
    "df = df[df['col'] >= 5]\n",
    "print(df)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    NaN\n",
       "1    8.0\n",
       "2   -7.0\n",
       "3    1.0\n",
       "4    5.0\n",
       "5    1.0\n",
       "6   -8.0\n",
       "7    5.0\n",
       "8   -4.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ser = pd.Series([2, 10, 3, 4, 9, 10, 2, 7, 3])\n",
    "ser.diff()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{v: 20}\n"
     ]
    }
   ],
   "source": [
    "from sympy import *\n",
    "\n",
    "v1, v2, v3, v4, v = symbols(\"v1:5 v\")\n",
    "i1, i2, i3, i4, io = symbols(\"i1:5 io\")\n",
    "\n",
    "eq1 = -(v - 20) / 5000 - v / 4000 - (v - 30) / 2000\n",
    "print(solve([eq1], [v]))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
